import { post } from '@/common/customUtils/index.js'

/**
 * 如何控制版本更新？
 * 1、通过调整 manifest.json  应用版本名称和版本号  根据后台接口返回的 值 进行判断是否更新
 * 
 * 
 * 实际情况 请走以下注释的代码  下方代码（1）为测试
 * widgetInfo.version 对应 manifest.json项目的版本名称 
 * 
 * widgetInfo.versionCode  应用版本号
 * 
 * */

/** wgt 更新 */
export default {
	mutations: {
		// 更新app
		updateWGTApp(state, info = {}) {
			const versionInfo = info.versionInfo || {};
			console.debug(versionInfo, 'versionInfo')
			if (!versionInfo.version || !versionInfo.url) return;

			// #ifdef APP-PLUS
			const propertyHandler = widgetInfo => {
				console.debug('接口版本=', versionInfo.version);
				console.debug('App版本=', widgetInfo.versionCode);
				console.debug('下载地址=', versionInfo.url);
				if (parseInt(widgetInfo.versionCode) < parseInt(versionInfo.version)) {
					// 下载wgt更新包
					uni.showLoading({ title: "更新中...", mask: true })
					uni.downloadFile({
						url: versionInfo.url,
						success: ({ tempFilePath, statusCode }) => {
							console.debug('下载后的临时地址=', tempFilePath, '--', statusCode);
							if (statusCode === 200) {
								// 更新配置
								const options = {
									force: true // 强制更新
								};
								const successBack = () => {
									uni.hideLoading();
									console.log('热更新成功');
									uni.showModal({
										title: '温馨提示',
										content: '重启APP体验最新版本',
										showCancel: false,
										success: res => {
											if (res.confirm)
												plus.runtime.restart();
											else if (res.cancel)
												console.debug('用户点击取消重启');
										}
									});
								}
								const errorBack = e => {
									uni.hideLoading();
									console.debug('热更新失败，错误原因：' + JSON.stringify());
								}
								plus.runtime.install(tempFilePath, options, successBack, errorBack);
							} else {
								console.debug('down err 2')
								uni.hideLoading();
							}
						},
						fail: err => {
							console.debug('down err', err)
							uni.hideLoading()
						}
					})
				} else uni.hideLoading();

			}
			plus.runtime.getProperty(plus.runtime.appid, propertyHandler);
			// #endif
		}
	},
	actions: {
		async updateVersion({ commit }) {
			try {
				// const client = uni.getSystemInfoSync().platform === "Android" ? 3 : 2
				// const res = await post('6423fb49bc82c', {
				// 	app_ident: 'user',
				// 	client,
				// })
				// const versionInfo = res.data || {};
				// // console.debug("接口版本信息=", versionInfo, res);
				// commit('updateWGTApp', { versionInfo });
			} catch (e) { console.debug("接口版本异常接口异常", e) }
		}
	}
}